<?php
   if ( !defined( "RUTA_FISICA_SISTEMA" ) )
     {
        require_once "../../../../config/Constantes.php";
     }

     $ruta_sistema = RUTA_FISICA_SISTEMA . "/sistema/";
     
     require_once $ruta_sistema . "general/clases/comun/ConfiguracionGeneral.php";
     require_once $ruta_sistema . "general/clases/comun/archivos/OperacionArchivo.php";
/** 
 * @author juanjo
 * 
 * 
 */
class OperacionArchivoProperties
   {
      /**
       * 
       * Metodo: leerArchivoProperties
       * Descripcion: 
       * Fecha de Creacion: 05/03/2012 16:52:14
       * Autor: Juan José Muñiz Juárez
       * params: @param unknown_type $file
       * params: @return multitype:multitype:unknown multitype:  |NULL
       * return: multitype:multitype:unknown multitype:  |NULL
       */
      public static function leerArchivoProperties( $file, $caracter_comentario = array( "#,//" ), $ignorar_espacios_blanco = true )
         {
            if ( OperacionArchivo :: existeArchivo( $file ) )
               {
                  $contenido_properties = array ();
                  try
                     {
                        $archivo = fopen ( $file, FILE_TIPO_ACCESO_LECTURA );
                        
                        if ( ConfiguracionGeneral::get( "PROPERTIES_CARACTER_COMENTARIO" ) )
                           {
                              // $caracter_comentario = array( explode( "," , PROPERTIES_CARACTER_COMENTARIO )  );
                              $caracter_comentario = explode ( ",", ConfiguracionGeneral::get( "PROPERTIES_CARACTER_COMENTARIO" ) );
                           }
                           
                       if ( ConfiguracionGeneral::get( "FILE_TAMANO_BUFFER_LECTURA" ) )
                         {
                            $tamano_buffer = ConfiguracionGeneral::get( "FILE_TAMANO_BUFFER_LECTURA" );
                         }    
                       else
                         {
                            $tamano_buffer = 1024;   
                         }  
                           
                        while ( ! feof ( $archivo ) )
                           {
                              $valores = fgets ( $archivo, $tamano_buffer );
                              
                              if ( $ignorar_espacios_blanco )
                                {
                                   if ( empty( $valores ) )
                                     {
                                        continue;
                                     }
                                }
                              
                              if ( ! empty ( $valores ) )
                                 {
                                    $ignorar_linea = false;
                                    if ( strlen ( trim ( $valores ) ) != 0 )
                                       {
                                          // Verificamos si se van a ignorar los comentarios
                                          if ( ! empty ( $caracter_comentario ) )
                                             {
                                                if ( $caracter_comentario != null )
                                                   {
                                                      if ( is_array ( $caracter_comentario ) && count ( $caracter_comentario ) > 0 )
                                                         {
                                                            foreach ( $caracter_comentario as $caracter )
                                                               {
                                                                  if ( strpos ( $valores, trim( $caracter ) ) !== false && strpos ( trim ( $valores, " " ), trim( $caracter ) ) < 2 )
                                                                     {
                                                                        $ignorar_linea = true;
                                                                        break;
                                                                     }
                                                               }
                                                         }
                                                   }
                                             }
                                       }
                                    else
                                       {
                                          $ignorar_linea = false;
                                       }
                                        //   $ignorar_linea = false;
                                    if ( $ignorar_linea == false && ( strlen( trim( $valores ) ) > 0 ) )
                                       {
                                          $caracter_asignacion = "=";
                                          $nombre_clave = "clave";
                                          $nombre_valor = "valor";
                                          
                                          if ( ConfiguracionGeneral::get( "PROPERTIES_CARACTER_ASIGNACION" ) )
                                             {
                                                $caracter_asignacion = ConfiguracionGeneral::get( "PROPERTIES_CARACTER_ASIGNACION" );
                                             }
                                          if ( ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_CLAVE" ) )
                                             {
                                                $nombre_clave = ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_CLAVE" );
                                             }
                                          if ( ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_VALOR" ) )
                                             {
                                                $nombre_valor = ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_VALOR" );
                                             }

                                          //echo " [ $caracter_asignacion ] = [". strlen( trim( $valores ) ). "]";   
                                          if ( !empty( $valores ) )
                                            {   
                                                list ( $clave, $valor ) = explode ( $caracter_asignacion, $valores );
                                                $contenido_properties [] = array ( $nombre_clave => $clave, $nombre_valor => $valor );
                                            }
                                       }
                                 }
                           }
                        fclose ( $archivo );
                     }
                  catch ( Exception $ex )
                     {
                        throw $ex;
                     }
               }
            return $contenido_properties;
         }
         
         /**
          * 
          * Metodo: guardarProperties
          * Descripcion: 
          * Fecha de Creacion: 27/03/2012 09:28:58
          * Autor: Juan José Muñiz Juárez
          * params: @param unknown_type $file
          * params: @param unknown_type $properties
          * params: @param unknown_type $replace_file
          * return: return_type
          */
       public static function guardarProperties( $file, $properties, $replace_file = true )
         {
            if ( $properties )
              {
                 if ( is_array( $properties ) && count( $properties ) > 0 )
                   {
                      if ( $replace_file )
                        {
                          OperacionArchivo::eliminarArchivo( $file );
                          OperacionArchivo::abrirConexionArchivo( $file, ConfiguracionGeneral::get( "FILE_TIPO_ACCESO_ESCRITURA" ) );
                        }
                      else  
                        {
                           OperacionArchivo::abrirConexionArchivo( $file, ConfiguracionGeneral::get( "FILE_TIPO_ACCESO_LECTURA_ESCRITURA_FINAL" ) );
                        }
                      
                      foreach( $properties as $contenido )
                        {
                           // verificamos si el contenido es un comentario
                           if ( $contenido[ ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_CLAVE" ) ] == ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_COMENTARIO" ) )
                             {
                                //echo "<br /> Comentario";
                                $info_property = $contenido[ ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_VALOR" ) ];
                             }
                           else  
                             {
                                $info_property = $contenido[ ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_CLAVE" ) ] . 
                                                 ConfiguracionGeneral::get( "PROPERTIES_CARACTER_ASIGNACION" ) . 
                                                 $contenido[ ConfiguracionGeneral::get( "PROPERTIES_NOMBRE_VALOR" ) ];
                             }
                             
                           OperacionArchivo::guardarContenidoArray($file, array( $info_property ), false);
                        }
                        
                      OperacionArchivo::cerrarConexionArchivo();  
                   }
              }
         }  
   }